// bswap.h

// Copyright (C) 2010  traxex

// Author: 	traxex <traxex@yahoo.cn>
// Created: 	14 Aug 2010
// Version: 	1.0

#pragma once

#include <traxex/cuda_impl/swap.h>
namespace Traxex{
namespace Cuda{

//array
template<typename T, int N> void bswap( GI<T[N]> array){
    T* x = array;
    bswap_kernel<T,N><<< cusize(N/2) >>>( x);
}

//matrix x
template<typename T, int Y, int X> void xbswap( GI<T[Y][X]> matrix){
    x_bswap_kernel<T,Y,X><<< cusize(X/2,Y) >>>( matrix);
}

template<typename T, int Y, int X> void ybswap( GI<T[Y][X]> matrix){
    y_bswap_kernel<T,Y,X><<< cusize(X, Y/2) >>>( matrix);
}

}
}
